
// 判断数组是否相等
export function isArrayEqual(arr1, arr2) {
  // 先判断长度是否相同
  if (arr1.length !== arr2.length) return false;
  // 遍历每个元素比较
  for (let i = 0; i < arr1.length; i++) {
    if (arr1[i] !== arr2[i]) return false;
  }
  return true;
}

// 读取本地的信息
export function readLocalStorage(key) {
  try {
    const value = uni.getStorageSync(key);
    return value ? value : null;
  } catch (error) {
    console.error('读取本地存储失败:', error);
  }
  return null;
}

/**
 * 深度比较两个值是否完全相等。
 * 支持比较：基本类型、数组、对象（字典）、Date、RegExp。
 * @param {*} a - 要比较的第一个值
 * @param {*} b - 要比较的第二个值
 * @returns {boolean} 如果两个值完全相等，返回 true，否则返回 false
 */
export function isEqual(a, b) {
  // 1. 严格相等检查（处理基本类型、null、undefined）
  // 如果 a 和 b 是同一个对象（或基本类型值相同），直接返回 true
  if (a === b) {
    return true;
  }

  // 2. 处理 NaN (NaN !== NaN，需要特殊判断)
  if (Number.isNaN(a) && Number.isNaN(b)) {
    return true;
  }

  // 3. 处理 Date 对象 (通过时间戳比较)
  if (a instanceof Date && b instanceof Date) {
    return a.getTime() === b.getTime();
  }

  // 4. 处理 RegExp 对象 (比较源模式和标志)
  if (a instanceof RegExp && b instanceof RegExp) {
    return a.source === b.source && a.flags === b.flags;
  }

  // 5. 处理数组
  if (Array.isArray(a) && Array.isArray(b)) {
    // 数组长度不同，直接不相等
    if (a.length !== b.length) {
      return false;
    }
    // 递归比较数组中的每个元素
    for (let i = 0; i < a.length; i++) {
      if (!isEqual(a[i], b[i])) {
        return false;
      }
    }
    return true;
  }

  // 6. 处理对象（字典），排除数组和 null
  // a 和 b 都必须是对象，且不能是数组或 null
  if (
    typeof a === 'object' &&
    a !== null &&
    typeof b === 'object' &&
    b !== null &&
    !Array.isArray(a) &&
    !Array.isArray(b)
  ) {
    // 获取对象的键数组
    const keysA = Object.keys(a);
    const keysB = Object.keys(b);

    // 键的数量不同，直接不相等
    if (keysA.length !== keysB.length) {
      return false;
    }

    // 递归比较对象的每个键值对
    for (const key of keysA) {
      // 检查 b 是否有 a 的所有键，并且对应的值相等
      if (!keysB.includes(key) || !isEqual(a[key], b[key])) {
        return false;
      }
    }
    return true;
  }

  // 7. 所有其他情况（类型不同或值不同）
  return false;
}


// 获取版本号
export async function getVersion() {
  try {
    const res = await uni.getSystemInfo();
    return res.appVersion;
    
  } catch (e) {
    console.error('获取版本号失败:', e);
    return '1.0.0';
  }
}


// 返回图片路径
export function getImagePath(url) {
  
  // 判断第一个字符是不是 / 如果是就删除,如果不是就直接返回
  if (url.slice(0, 1) === '/') {
    return url.slice(1);
  }
  return url;
}



	// 复制函数
	/**
	 * 复制文本到剪贴板
	 * @param {string} text - 要复制的文本
	 */
	export const copyToClipboard = (text) => {
		if (!text) return;

		uni.setClipboardData({
			data: text,
			success: () => {
				uni.showToast({
					title: '复制成功',
					icon: 'success',
					duration: 2000
				});
			},
			fail: () => {
				uni.showToast({
					title: '复制失败',
					icon: 'none',
					duration: 2000
				});
			}
		});
	};
